﻿#pragma once
#include <string>

  /****************************************************结构型方式 适配器******************************************************/

  // Target: 客户端需要的目标接
class JsonInfo
{
public: 
    ~JsonInfo();
    virtual std::string request() const;
};

  // Adaptee: 客户端不兼容的接口, 需要要转换为Target接口
class XmlInfo
{
public: 
    std::string specialRequest() const;
};

  // Adapter: 适配器, 就是吧Adaptee包装起来, 让他看上去像Target
class XmlJsonAdapter: public JsonInfo
{
private: 
    XmlInfo *m_adaptee;

public: 
    XmlJsonAdapter(XmlInfo *info);
    virtual std::string request() const override;
};